#include	<stdio.h>
#include    <stdlib.h>
#include	<utmp.h>
#include	<fcntl.h>
#include	<unistd.h>
#include	<time.h>
#include	<string.h>

#define	SHOWHOST	

void showtime(long timeval){  
    char* fm;  
    fm = ctime(&timeval);  
    fm[strlen(fm)-1] = '\0';
    printf("%s",fm+4);  
}  

int show_info( struct utmp *utbufp )
{
	printf("%-8.8s", utbufp->ut_name);	
	printf(" ");				
	printf("%-8.8s", utbufp->ut_line);	
	printf(" ");
	showtime(utbufp->ut_time);
	printf(" ");				

#ifdef	SHOWHOST
	printf("(%s)", utbufp->ut_host);	
#endif
	printf("\n");				

	return 0;
}

int main()
{
	struct utmp	 current_record;	
	int		utmpfd;		
	int		reclen = sizeof(current_record);

	if ( (utmpfd = open(UTMP_FILE, O_RDONLY)) == -1 ){
		perror( UTMP_FILE );	
		exit(1);
	}
	while ( read(utmpfd, &current_record, reclen) == reclen )
		show_info(&current_record);
	close(utmpfd);
	return 0;			
}

